package org.example.project_12.service;

import org.example.project_12.dto.SpaceDto;
import org.example.project_12.dto.SpaceMemberDto;
import org.example.project_12.entity.Space;
import org.example.project_12.entity.SpaceMember;

import java.util.List;

public interface SpaceService {

    /**
     * 创建空间
     */
    Space createSpace(Space space, Long ownerId);

    /**
     * 更新空间信息
     */
    boolean updateSpace(Space space, Long userId);

    /**
     * 删除空间
     */
    boolean deleteSpace(Long spaceId, Long userId);

    /**
     * 获取空间详情
     */
    SpaceDto getSpaceById(Long spaceId, Long userId);

    /**
     * 获取用户创建的空间列表
     */
    List<SpaceDto> getSpacesByOwnerId(Long userId);

    /**
     * 获取用户参与的空间列表
     */
    List<SpaceDto> getSpacesByMemberId(Long userId);

    /**
     * 获取公开空间列表
     */
    List<SpaceDto> getPublicSpaces();

    /**
     * 空间名称模糊搜索
     */
    List<SpaceDto> searchSpacesByName(String name, Long userId);

    /**
     * 邀请用户加入空间
     */
    boolean inviteMember(Long spaceId, Long userId, String permission, Long inviterId);

    /**
     * 移除空间成员
     */
    boolean removeMember(Long spaceId, Long memberId, Long operatorId);

    /**
     * 修改成员权限
     */
    boolean updateMemberPermission(Long spaceId, Long memberId, String permission, Long operatorId);

    /**
     * 获取空间成员列表
     */
    List<SpaceMemberDto> getSpaceMembers(Long spaceId, Long userId);

    /**
     * 检查用户是否有空间权限
     */
    boolean hasPermission(Long spaceId, Long userId, String requiredPermission);

    /**
     * 检查用户是否为空间所有者
     */
    boolean isSpaceOwner(Long spaceId, Long userId);

    /**
     * 检查用户是否为空间成员
     */
    boolean isUserMemberOfSpace(Long spaceId, Long userId);
} 